package com.sanqing.model;

import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import javax.swing.JTextField;

/**
 * 正数和小数点输入监听器
 * 功能：限制文本框只能输入正整数或正小数，且只能有一个小数点
 */
public class FloatNumberListener extends KeyAdapter {
    
    @Override
    public void keyTyped(KeyEvent e) {
        char c = e.getKeyChar();
        JTextField textField = (JTextField) e.getSource();
        String currentText = textField.getText();
        
        // 允许的字符：数字、小数点、退格键、删除键
        if (!(c >= '0' && c <= '9' || 
              c == KeyEvent.VK_BACK_SPACE || 
              c == KeyEvent.VK_DELETE || 
              c == '.')) {
            e.consume(); // 忽略非法字符
            return;
        }
        
        // 处理小数点限制
        if (c == '.') {
            // 检查是否已有小数点或输入框为空
            if (currentText.contains(".") || currentText.isEmpty()) {
                e.consume();
            }
            return;
        }
        
        // 处理开头为0的情况（允许0.123，但不允许001或01）
        if (currentText.startsWith("0") && 
            !currentText.equals("0") && 
            !currentText.contains(".")) {
            e.consume();
        }
    }
    
    @Override
    public void keyPressed(KeyEvent e) {
        // 禁止输入负号
        if (e.getKeyCode() == KeyEvent.VK_MINUS) {
            e.consume();
        }
    }
}